x86/mm: Fix guard hole handling
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Fri, 30 Nov 2018 20:23:27 +0000 (23:23 +0300)
committerBastian Blank <waldi@debian.org>
Sun, 16 Dec 2018 18:45:54 +0000 (18:45 +0000)
commit2b8fd0a673f2ff6acce87da16b7027e1d67be78a
tree692d31f4b8aec8c117d81f61ee2d665adb754a99
parentc6b25ae73c44a84221e86a2df255a5a9f0f80f81
x86/mm: Fix guard hole handling

There is a guard hole at the beginning of the kernel address space, also
used by hypervisors. It occupies 16 PGD entries.

This reserved range is not defined explicitely, it is calculated relative
to other entities: direct mapping and user space ranges.

The calculation got broken by recent changes of the kernel memory layout:
LDT remap range is now mapped before direct mapping and makes the
calculation invalid.

The breakage leads to crash on Xen dom0 boot[1].

Define the reserved range explicitely. It's part of kernel ABI (hypervisors
expect it to be stable) and must not depend on changes in the rest of
kernel memory layout.

[1] https://lists.xenproject.org/archives/html/xen-devel/2018-11/msg03313.html

Fixes: d52888aa2753 ("x86/mm: Move LDT remap out of KASLR region on 5-level paging")
Reported-by: Hans van Kranenburg <hans.van.kranenburg@mendix.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Hans van Kranenburg <hans.van.kranenburg@mendix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Cc: bp@alien8.de
Cc: hpa@zytor.com
Cc: dave.hansen@linux.intel.com
Cc: luto@kernel.org
Cc: peterz@infradead.org
Cc: boris.ostrovsky@oracle.com
Cc: bhe@redhat.com
Cc: linux-mm@kvack.org
Cc: xen-devel@lists.xenproject.org
Link: https://lkml.kernel.org/r/20181130202328.65359-2-kirill.shutemov@linux.intel.com
Gbp-Pq: Topic bugfix/x86
Gbp-Pq: Name x86-mm-Fix-guard-hole-handling.patch
arch/x86/include/asm/pgtable_64_types.h
arch/x86/mm/dump_pagetables.c
arch/x86/xen/mmu_pv.c